package ace.cmp.i18n.api;

import java.util.Collection;
import java.util.Map;
import java.util.function.Consumer;

/**
 * @author caspar
 * @date 2023/8/10 10:37
 */
public interface MessageSourceAssertService {
  void isTrue(boolean value, String code, Object[] args, String defaultMessage);

  void isTrue(boolean value, String code, String defaultMessage);

  void isTrue(boolean value, String code, String defaultMessage, Consumer<String> consumer);

  void isTrue(
      boolean value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);

  void isFalse(boolean value, String code, Object[] args, String defaultMessage);

  void isFalse(boolean value, String code, String defaultMessage);

  void isFalse(boolean value, String code, String defaultMessage, Consumer<String> consumer);

  void isFalse(
      boolean value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);

  void isNull(Object value, String code, Object[] args, String defaultMessage);

  void isNull(Object value, String code, String defaultMessage);

  void isNull(Object value, String code, String defaultMessage, Consumer<String> consumer);

  void isNull(
      Object value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);

  void isNotNull(Object value, String code, Object[] args, String defaultMessage);

  void isNotNull(Object value, String code, String defaultMessage);

  void isNotNull(Object value, String code, String defaultMessage, Consumer<String> consumer);

  void isNotNull(
      Object value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);

  void isEmpty(String value, String code, Object[] args, String defaultMessage);

  void isEmpty(String value, String code, String defaultMessage);

  void isEmpty(String value, String code, String defaultMessage, Consumer<String> consumer);

  void isEmpty(
      String value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);

  void isEmpty(Collection value, String code, Object[] args, String defaultMessage);

  void isEmpty(Collection value, String code, String defaultMessage);

  void isEmpty(Collection value, String code, String defaultMessage, Consumer<String> consumer);

  void isEmpty(
      Collection value,
      String code,
      Object[] args,
      String defaultMessage,
      Consumer<String> consumer);

  void isEmpty(Map value, String code, Object[] args, String defaultMessage);

  void isEmpty(Map value, String code, String defaultMessage);

  void isEmpty(Map value, String code, String defaultMessage, Consumer<String> consumer);

  void isEmpty(
      Map value, String code, Object[] args, String defaultMessage, Consumer<String> consumer);
}
